/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.subway.beansSesion;

/**
 *
 * @author Héctor <UFG>
 */
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Iterator;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.FacesContext;
import org.subway.mantenimientos.MantenimientoLogin;
import org.subway.persistencias.UsuarioPersonaRol;
import org.subway.utilitarios.EncriptacionDatos;

@ManagedBean(name = "jsfMbLoginUsuario")
@RequestScoped
public class JsfMbLoginUsuario implements Serializable {

    private String usuario;
    private String password;
    private String urlFoto;
    private String nombreUsuario;
    private String apellidoUsuario;
    private int activoPersona;
    private MantenimientoLogin mantenimientoLogin = new MantenimientoLogin();
    FacesContext contexto = FacesContext.getCurrentInstance();
    private EncriptacionDatos encriptacionDatos = new EncriptacionDatos();
    @ManagedProperty("#{jsfMbSesion}")
    private JsfMbSesion jsfMbSesion;

    public JsfMbSesion getJsfMbSesion() {
        return jsfMbSesion;
    }

    public void setJsfMbSesion(JsfMbSesion jsfMbSesion) {
        this.jsfMbSesion = jsfMbSesion;
    }

    public void Validar() {
        try {
            List<UsuarioPersonaRol> Lista = null;
            Lista = mantenimientoLogin.Validar(this.getNombreUsuario(), encriptacionDatos.getHash(this.getPassword()));
            if (Lista.size() == 1) {
                jsfMbSesion.setInactivo(Boolean.FALSE);
                jsfMbSesion.setActivo(Boolean.TRUE);
                for (Iterator<UsuarioPersonaRol> iteratorLista = Lista.iterator(); iteratorLista.hasNext();) {
                    UsuarioPersonaRol usuarioTemporal = (UsuarioPersonaRol) iteratorLista.next();
                    jsfMbSesion.setUsuarioNombre(usuarioTemporal.getUsuarioPersonaId().getPersonaApellido() + ", " + usuarioTemporal.getUsuarioPersonaId().getPersonaNombre());
                    jsfMbSesion.setUsuarioId(usuarioTemporal.getUsuarioPersonaId().getPersonaId());
                }
                contexto.getExternalContext().redirect("administrador");
            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Datos incorrectos", "Para ingresar al sistema debe poseer un usuario y contraseña válido."));

            }


        } catch (Exception ex) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "No se puede conectar con la base de datos", "No se ha logrado establecer la conexión a la base"));

        }

    }

    public int getActivoPersona() {
        return activoPersona;
    }

    public void setActivoPersona(int activoPersona) {
        this.activoPersona = activoPersona;
    }

    public String getApellidoUsuario() {
        return apellidoUsuario;
    }

    public void setApellidoUsuario(String apellidoUsuario) {
        this.apellidoUsuario = apellidoUsuario;
    }

    public String getNombreUsuario() {
        return nombreUsuario;
    }

    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUrlFoto() {
        return urlFoto;
    }

    public void setUrlFoto(String urlFoto) {
        this.urlFoto = urlFoto;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
}
